package com.tsyun.view_project;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

import com.tsyun.view_project.util.DensityUtil;

import static android.app.ProgressDialog.STYLE_HORIZONTAL;

public class DialogActivity extends AppCompatActivity {

    private ProgressDialog progressDialog;
    private PopupWindow popupWindow;
    //对话框
    private Dialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        //进度条对话框
        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("正在加载中...");
//        //设置对话框外面的区域不可点击
        progressDialog.setCanceledOnTouchOutside(false);
        //设置进度条的样式为水平方向的进度条（带进度） Spin 旋转 取值两种：1：ProgressDialog.STYLE_HORIZONTAL,2:ProgressDialog.STYLE_SPINNER
        progressDialog.setProgressStyle(STYLE_HORIZONTAL);
//        progressDialog.setProgress(50);
//        progressDialog.show();
        //此处注意，设置进度条进度，需要在对话框显示出来以后，再设置进度
        progressDialog.setProgress(50);
        new Handler(getMainLooper()).postDelayed(() -> {
////            progressDialog.dismiss();
//            progressDialog.setProgress(50);
        }, 1000);
        //警示框
        //此处使用构造者（建造者模式）来创建对话框
        //使用链式调用（责任链模式）
//        AlertDialog alertDialog = new AlertDialog.Builder(this)
//                .setCancelable(true)//设置是否可取消对话框
//                .setTitle("下载提醒")
//                .setIcon(R.mipmap.ic_back)//设置显示的图标
//                .setMessage("您是否要更新应用？")
//                .setPositiveButton("确定", (dialog, which) -> {
//                    //此时如果要进行网络操作，需要在子线程中启动网络操作，并在UI线程（主线程）更新UI
//                    Toast.makeText(this, "应用正在下载更新", Toast.LENGTH_SHORT).show();
//                    dialog.dismiss();
//                })
//                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
//                    @Override
//                    public void onClick(DialogInterface dialog, int which) {
//                        dialog.dismiss();
//                    }
//                }).show();

        //自定义对话框
        dialog = new Dialog(this);
        dialog.setCanceledOnTouchOutside(false);
        View view = LayoutInflater.from(this).inflate(R.layout.dialog_confirm,null);
        //给弹出框，设置自定义的view视图
        dialog.setContentView(view);
        //此处要设置对话框的显示位置，就需要获取到dialog的window对象，来设置他的位置
        Window window = dialog.getWindow();
        window.setGravity(Gravity.BOTTOM|Gravity.END);
//        Window window = getWindow();
        //此处需要获取到对话框中的某个控件，并对其进行事件的设置
        TextView view1 = view.findViewById(R.id.tv_confirm);
        view1.setOnClickListener(v->{
            dialog.dismiss();
        });
//        dialog.show();
        //popupwindow
        ImageView ivMenu = findViewById(R.id.iv_menu);
        popupWindow = new PopupWindow(this);
        //设置Popupwindow显示的视图
        View view2 = LayoutInflater.from(this).inflate(R.layout.dialog_demo,null);
        popupWindow.setContentView(view2);
        //设置颜色或者去除黑色半透明的背景
        popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        ivMenu.setOnClickListener(v->{
            int marginRight = DensityUtil.dp2px(this,0);
            popupWindow.showAsDropDown(ivMenu,-marginRight,30, Gravity.CENTER);
        });
        //设置点击外部的时候，可隐藏window
        popupWindow.setOutsideTouchable(true);
    }
}